package com.bdqn.sys.controller.utils;

import com.bdqn.common.utitls.SystemConstants;
import com.bdqn.common.utitls.UUIDUtil;
import org.apache.velocity.shaded.commons.io.FilenameUtils;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 文件上传工具类
 */
public class FileUploadUtils {

    /**
     * 重命名文件名称
     * @param oldName
     * @return
     */
    public static String createNewFileName(String oldName) {
        String extension = FilenameUtils.getExtension(oldName);//获取文件后缀名称
        return UUIDUtil.randomUUID()+"."+extension;
    }

    /**
     * 修改文件名称
     * @param img
     * @return
     */
    public static String renameFile(String img) {
        //修改文件名后缀
        String newFileName=img.replace("_temp","");
        //构建文件对象
        File file=new File(SystemConstants.IMAGE_UPLOAD_PATH,img);
        //判断文件是否存在
        if(file.exists()){
            //重命名文件名
            file.renameTo(new File(SystemConstants.IMAGE_UPLOAD_PATH,newFileName));
        }
        return  newFileName;
    }

    /**
     * 删除文件
     * @param oldImg
     */
    public static void deleteFile(String oldImg) {
        //判断是否默认图片
        if(!oldImg.equals(SystemConstants.DEFAULT_CAR_IMG)){//不是默认图片就删除
            //构建文件对象
            File file=new File(SystemConstants.IMAGE_UPLOAD_PATH,oldImg);
            //判断文件是否存在
            if (file.exists()){
                file.delete();
            }
        }


    }

    /**
     * 定时删除
     */
    public static void deleteFiles() {
        //获取当前日期的文件夹
        String datePath=new SimpleDateFormat("yyyy-MM-dd").format(new Date());
        //构建文件对象
        File file=new File(SystemConstants.IMAGE_UPLOAD_PATH,datePath);
        //判断文件是否为空
        if(file!=null){
            //获取该文件夹下所有文件信息
            File[] files = file.listFiles();
            //判断该文件夹下是否存在文件
            if (files!=null&&files.length>0){
                //循环删除
                for (File f : files) {
                    //判断文件是否以_temp结尾
                    if(f.getName().endsWith("_temp")){
                        f.delete();
                    }
                }
            }
        }
    }
}
